1. Field
The present disclosure relates in general to methods, circuits, apparatus and computer program code for encoding data for transmission over a channel in time and/or space and decoding that data, where erasures and/or errors are expected, and more particularly to methods, circuits, apparatus and computer program code for encoding data using source blocks that overlap an can be partially or wholly coextensive with other source blocks.
2. Background
Transmission of files between a sender and a recipient over a communications channel has been the subject of much literature. Preferably, a recipient desires to receive an exact copy of data transmitted over a channel by a sender with some level of certainty. Where the channel does not have perfect fidelity (which covers most all physically realizable systems), one concern is how to deal with data lost or garbled in transmission. Lost data (erasures) are often easier to deal with than corrupted data (errors) because the recipient cannot always tell when corrupted data is data received in error. Many error correcting codes have been developed to correct for erasures and/or for errors. Typically, the particular code used is chosen based on some information about the infidelities of the channel through which the data is being transmitted and the nature of the data being transmitted. For example, where the channel is known to have long periods of infidelity, a burst error code might be best suited for that application. Where only short, infrequent errors are expected a simple parity code might be best.
In particular applications, there is a need for handling more than one level of service. For example, a broadcaster might broadcast two levels of service, wherein a device capable of receiving only one level receives an acceptable set of data and a device capable of receiving the first level and the second level uses the second level to improve on the data of the first level. An example of this is FM radio, where some devices only received the monaural signal and others received that and the stereo signal. One characteristic of this scheme is that the higher layers are not normally useful without the lower layers. For example, if a radio received the secondary, stereo signal, but not the base signal, it would not find that particularly useful, whereas if the opposite occurred, and the primary level was received but not the secondary level, at least some useful signal could be provided. For this reason, the primary level is often considered more worthy of protection relative to the secondary level. In the FM radio example, the primary signal is sent closer to baseband relative to the secondary signal to make it more robust.
Similar concepts exist in data transport and broadcast systems, where a first level of data transport is for a basic signal and a second level is for an enhanced layer. An example is H.264 Scalable Video Coding (SVC) wherein an H.264 base compliant stream is sent, along with enhancement layers. An example is a 1 megabit per second (mbps) base layer and a 1 mbps enhancement layer. In general, if a receiver is able to decode all of the base layer, the receiver can provide a useful output and if the receiver is able to decode all of the enhancement layer the receiver can provide an improved output, however if the receiver cannot decode all of the base layer, decoding the enhancement layer does not normally provide anything useful.
Forward error correction (“FEC”) is often used to enhance the ability of a receiver to recover data that is transmitted. With FEC, a transmitter, or some operation, module or device operating for the transmitter, will encode the data to be transmitted such that the receiver is able to recover the original data from the transmitted encoded data even in the presence of erasures and or errors.
Because of the differential in the effects of loss of one layer versus another, different coding might be used for different layers. For example, the data for a base layer might be transmitted with additional data representing FEC coding of the data in the base layer, followed by the data of the enhanced layer with additional data representing FEC coding of the data in the base layer and the enhanced layer. With this approach, the latter FEC coding can provide additional assurances that the base layer can be successfully decoded at the receiver.
While such a layered approach might be useful in certain applications, it can be quite limiting in other applications. For example, the above approach can be impractical for efficiently decoding a union of two or more layers using some encoding symbols generated from one of the layers and other encoding symbols generated from the combination of the two or more layers.